iT邦幫忙

2025 iThome 鐵人賽

DAY 16
0
生成式 AI

「解放自動化新利器!深入了解 n8n 如何助你輕鬆打造專屬工作流程」系列 第 16

Day 16|用 n8n 內建邏輯打造看得懂人話的「進階版」巨鯨告警

  • 分享至 

  • xImage
  •  

一、為什麼要「看得懂」交易?

到目前為止,我們的系統只會告訴我們「誰 (from) 轉了多少錢 (value) 給誰 (to)」。這雖然是事實,但卻缺乏了最重要的「上下文 (Context)」。

試想一下,以下兩種告警,哪一種對你更有價值?

  • 陽春版0xabc... 轉了 100 萬 USDC 到 0xdef...
  • 進階版🚨 交易所提幣!有 100 萬 USDC 從【Binance 14】轉出至一個【新錢包】!

答案顯而易見。第二種告警讓我們能立刻推斷出可能的市場意圖。這就是我們今天要達成的目標:讓 n8n 自動為交易貼上「語意標籤」


二、最終流程圖:用 Switch 節點取代 AI 大腦

我們的流程將進行一次小手術,將原本預計要放 AI 模型的位置,換成 n8n 的內建邏輯中樞 — Switch 節點。

本日工作流Webhook → Code (準備與標記資料) → Switch (核心邏輯判斷) → 多個 Discord (客製化通知)

三、Day 16 實戰:賦予你的告警系統邏輯判斷力

步驟 1:升級你的 Code 節點 (賦予它記憶力)

這個節點是我們系統的「記憶中樞」。我們將在這裡建立一個「地址標籤庫」,讓 n8n 認識幣圈的各大交易所與 DeFi 協議。

  1. 在你原有的 Webhook 節點後方,確保連接的是一個 Code 節點。
  2. 將以下完整程式碼,直接複製並貼到你的 Code 節點中,覆蓋掉所有舊內容。
// 獲取 Webhook 節點傳來的完整資料
const allData = $input.all();

// 我們假設 Webhook 一次只會觸發一筆資料,所以直接取第一筆
const item = allData[0];

// --- 1. 資料解析與標準化 (防呆設計) ---
// 從複雜的 Webhook 結構中,安全地取出我們需要的交易資訊
const activity = item.json.event?.activity?.[0] || {};
const tx = {
  from: activity.fromAddress || '未知地址',
  to: activity.toAddress || '未知地址',
  value: parseFloat(activity.value) || 0,
  asset: activity.asset || '未知代幣',
  hash: activity.hash || 'N/A',
};

// --- 2. 地址標籤庫 (你的智慧核心) ---
// 你可以不斷擴充這個列表,讓你的機器人認識更多地址
const knownAddresses = {
  // === 交易所 ===
  "0x28c6c06298d514db089934071355e5743bf21d60": "Binance 14",
  "0xf977814e90da44bfa03b6295a0616a897441acec": "Binance 8",
  "0x503828976d22510aad0201ac792873a52524375a": "Coinbase 10",
  // === DeFi 協議 ===
  "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45": "Uniswap V3 Router",
  "0x7a250d5630b4cf539739df2c5dacb4c659f2488d": "Uniswap V2 Router",
  "0x1111111254fb6c44bac0bed2854e76f90643097d": "1inch v5 Router",
  // === 基礎代幣 ===
  "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2": "Wrapped Ether (WETH)"
};

// --- 3. 賦予交易「語意標籤」---
// 將 from 和 to 地址轉換為我們看得懂的標籤
// .toLowerCase() 是為了確保比對時,不受地址大小寫差異影響
item.json.fromTag = knownAddresses[tx.from.toLowerCase()] || "未知錢包";
item.json.toTag = knownAddresses[tx.to.toLowerCase()] || "未知錢包";

// 為了讓後續節點能直接使用標準化後的乾淨數據,我們把 tx 物件也加到輸出中
item.json.tx = tx;

// 最後,將這筆被我們「加工」過的資料回傳,給下一個節點 (Switch) 使用
return item;

完成後,這個節點的輸出資料中,就會多出 fromTag 和 toTag 這兩個我們人工加上的「語意標籤」。

步驟 2:設定 Switch 節點 (擔任判斷大腦)

這是取代 AI 的核心步驟,我們要用它來實現智慧分流。

  1. 在 Code 節點後方,新增一個 Switch 節點。
  2. 點開 Switch 節點,開始設定我們的「路由規則 (Routing Rules)」。我們的目標是建立 3 個主要分支:
輸出索引 分支名稱 (自訂) 規則設定 (條件)
0 交易所充幣 {{ $json.toTag }} - Contains - Binance
1 交易所提幣 {{ $json.fromTag }} - Contains - Binance
2 DeFi 互動 {{ $json.toTag }} - Contains - Uniswap
  • 如何設定
    • 在 Property 欄位填入我們要判斷的變數,例如 {{ $json.toTag }}
    • 在 Operation 欄位選擇判斷方式,例如 Contains (包含)。
    • 在 Value 欄位填入我們要比對的文字,例如 Binance
    • 點擊「Add Rule」可以新增更多判斷條件,點擊「Add Output」可以新增更多輸出分支。

https://ithelp.ithome.com.tw/upload/images/20250930/20178736wNbLcjB74u.png

步驟 3:為不同情境客製化 Discord 通知

現在,最有趣的部分來了!我們要讓機器人根據不同情境,說出不同語氣的話。

  1. 從 Switch 節點的輸出點 0 (交易所充幣) 拉一條線,連接到一個新的 Discord 節點。設定訊息內容:

    📈 資金流入交易所!{{ $json.tx.asset }} 已從 {{ $json.fromTag }} 轉入 {{ $json.toTag }}。金額:{{ $json.tx.value.toLocaleString('en-US') }}[查看交易詳情](https://etherscan.io/tx/{{ $json.tx.hash }})

  2. 從 Switch 節點的輸出點 1 (交易所提幣) 拉一條線,連接到第二個 Discord 節點。設定訊息內容:

    🚨 注意!大額資金提幣!{{ $json.tx.asset }} 已從 {{ $json.fromTag }} 提出至 {{ $json.toTag }}!金額:{{ $json.tx.value.toLocaleString('en-US') }}[查看交易詳情](https://etherscan.io/tx/{{ $json.tx.hash }})

  3. 從 Switch 節點的輸出點 2 (DeFi 互動) 拉一條線,連接到第三個 Discord 節點。設定訊息內容:

    ⚛️ DeFi 協議互動有一筆關於 {{ $json.tx.asset }} 的操作發生在 {{ $json.toTag }}。金額:{{ $json.tx.value.toLocaleString('en-US') }}[查看交易詳情](https://etherscan.io/tx/{{ $json.tx.hash }})

  4. 你可以選擇性地從 Switch 節點的 Default 輸出點,再接一個 Discord 節點,用來處理所有其他類型的「一般轉帳」。

https://ithelp.ithome.com.tw/upload/images/20250930/20178736m2GKBHpKQy.png

四、結論:選擇最適合的工具,而非最炫的

恭喜你!今天我們完成了一次非常實用的「技術轉向」。我們證明了,在追求自動化的道路上,不一定總是需要最複雜、最昂貴的工具。有時候,回歸工具本身,善用其內建的強大邏輯,反而能打造出更穩定、快速、且零成本的解決方案。

透過 Code 節點的資料預處理和 Switch 節點的邏輯分流,我們的巨鯨告警系統,已經從一個只會「報數」的機器,進化成一個能初步「分類情境」的智慧助理。


上一篇
Day 15:整合鏈上監控流程,回顧自動化設計思維
下一篇
Day17:系統升級!讓 n8n 動態讀取 Google Sheets,告別寫死的地址標籤
系列文
「解放自動化新利器!深入了解 n8n 如何助你輕鬆打造專屬工作流程」20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言